package algotithm.leetcode.dp.test256;

/**
 * @author 25068
 * @Date 2021/7/4 20:11
 * @Title 256. 粉刷房子
 */
public class Solution {

    public static void main(String[] args) {
        int[][] costs = {{17,2,17},{16,16,5},{14,3,19}};
        Solution solution = new Solution();
        int minCost = solution.minCost(costs);
        System.out.println(minCost);
    }

    public int minCost(int[][] costs) {
        int n = costs.length;
        int m = costs[0].length;
        int[][] dp = new int[n + 1][3];
        for (int i = 1; i <= n; i++) {
            dp[i][0] = Math.min(dp[i - 1][1], dp[i - 1][2]) + costs[i - 1][0];
            dp[i][1] = Math.min(dp[i - 1][0], dp[i - 1][2]) + costs[i - 1][1];
            dp[i][2] = Math.min(dp[i - 1][0], dp[i - 1][1]) + costs[i - 1][2];
        }
        return Math.min(Math.min(dp[n][0], dp[n][1]), dp[n][2]);
    }
}
